/**
 */
package de.thwildau.tm.moses.abnf.abnf.util;

import de.thwildau.tm.moses.abnf.abnf.*;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * The <b>Adapter Factory</b> for the model.
 * It provides an adapter <code>createXXX</code> method for each class of the model.
 * <!-- end-user-doc -->
 * @see de.thwildau.tm.moses.abnf.abnf.AbnfPackage
 * @generated
 */
public class AbnfAdapterFactory extends AdapterFactoryImpl
{
  /**
   * The cached model package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static AbnfPackage modelPackage;

  /**
   * Creates an instance of the adapter factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public AbnfAdapterFactory()
  {
    if (modelPackage == null)
    {
      modelPackage = AbnfPackage.eINSTANCE;
    }
  }

  /**
   * Returns whether this factory is applicable for the type of the object.
   * <!-- begin-user-doc -->
   * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
   * <!-- end-user-doc -->
   * @return whether this factory is applicable for the type of the object.
   * @generated
   */
  @Override
  public boolean isFactoryForType(Object object)
  {
    if (object == modelPackage)
    {
      return true;
    }
    if (object instanceof EObject)
    {
      return ((EObject)object).eClass().getEPackage() == modelPackage;
    }
    return false;
  }

  /**
   * The switch that delegates to the <code>createXXX</code> methods.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected AbnfSwitch<Adapter> modelSwitch =
    new AbnfSwitch<Adapter>()
    {
      @Override
      public Adapter caseRuleSet(RuleSet object)
      {
        return createRuleSetAdapter();
      }
      @Override
      public Adapter caseRule(Rule object)
      {
        return createRuleAdapter();
      }
      @Override
      public Adapter caseAlternation(Alternation object)
      {
        return createAlternationAdapter();
      }
      @Override
      public Adapter caseConcatenation(Concatenation object)
      {
        return createConcatenationAdapter();
      }
      @Override
      public Adapter caseRepetition(Repetition object)
      {
        return createRepetitionAdapter();
      }
      @Override
      public Adapter caseElement(Element object)
      {
        return createElementAdapter();
      }
      @Override
      public Adapter caseRuleRef(RuleRef object)
      {
        return createRuleRefAdapter();
      }
      @Override
      public Adapter caseGroup(Group object)
      {
        return createGroupAdapter();
      }
      @Override
      public Adapter caseOption(Option object)
      {
        return createOptionAdapter();
      }
      @Override
      public Adapter caseCharVal(CharVal object)
      {
        return createCharValAdapter();
      }
      @Override
      public Adapter caseNumVal(NumVal object)
      {
        return createNumValAdapter();
      }
      @Override
      public Adapter caseBinVal(BinVal object)
      {
        return createBinValAdapter();
      }
      @Override
      public Adapter caseDecVal(DecVal object)
      {
        return createDecValAdapter();
      }
      @Override
      public Adapter caseHexVal(HexVal object)
      {
        return createHexValAdapter();
      }
      @Override
      public Adapter caseProseVal(ProseVal object)
      {
        return createProseValAdapter();
      }
      @Override
      public Adapter caseRepeat(Repeat object)
      {
        return createRepeatAdapter();
      }
      @Override
      public Adapter defaultCase(EObject object)
      {
        return createEObjectAdapter();
      }
    };

  /**
   * Creates an adapter for the <code>target</code>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param target the object to adapt.
   * @return the adapter for the <code>target</code>.
   * @generated
   */
  @Override
  public Adapter createAdapter(Notifier target)
  {
    return modelSwitch.doSwitch((EObject)target);
  }


  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.RuleSet <em>Rule Set</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.RuleSet
   * @generated
   */
  public Adapter createRuleSetAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Rule <em>Rule</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Rule
   * @generated
   */
  public Adapter createRuleAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Alternation <em>Alternation</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Alternation
   * @generated
   */
  public Adapter createAlternationAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Concatenation <em>Concatenation</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Concatenation
   * @generated
   */
  public Adapter createConcatenationAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Repetition <em>Repetition</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Repetition
   * @generated
   */
  public Adapter createRepetitionAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Element <em>Element</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Element
   * @generated
   */
  public Adapter createElementAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.RuleRef <em>Rule Ref</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.RuleRef
   * @generated
   */
  public Adapter createRuleRefAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Group <em>Group</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Group
   * @generated
   */
  public Adapter createGroupAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Option <em>Option</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Option
   * @generated
   */
  public Adapter createOptionAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.CharVal <em>Char Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.CharVal
   * @generated
   */
  public Adapter createCharValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.NumVal <em>Num Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.NumVal
   * @generated
   */
  public Adapter createNumValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.BinVal <em>Bin Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.BinVal
   * @generated
   */
  public Adapter createBinValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.DecVal <em>Dec Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.DecVal
   * @generated
   */
  public Adapter createDecValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.HexVal <em>Hex Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.HexVal
   * @generated
   */
  public Adapter createHexValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.ProseVal <em>Prose Val</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.ProseVal
   * @generated
   */
  public Adapter createProseValAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for an object of class '{@link de.thwildau.tm.moses.abnf.abnf.Repeat <em>Repeat</em>}'.
   * <!-- begin-user-doc -->
   * This default implementation returns null so that we can easily ignore cases;
   * it's useful to ignore a case when inheritance will catch all the cases anyway.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @see de.thwildau.tm.moses.abnf.abnf.Repeat
   * @generated
   */
  public Adapter createRepeatAdapter()
  {
    return null;
  }

  /**
   * Creates a new adapter for the default case.
   * <!-- begin-user-doc -->
   * This default implementation returns null.
   * <!-- end-user-doc -->
   * @return the new adapter.
   * @generated
   */
  public Adapter createEObjectAdapter()
  {
    return null;
  }

} //AbnfAdapterFactory
